package com.iweb.day09;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author WuYongheng
 * @date 2021/11/15
 * @description 1、使用迭代删除  2、使用倒序的for循环删除
 */
public class TestDelete2 {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<>();
        personList.add(new Person("001", "jerry"));
        personList.add(new Person("002", "tom"));
        personList.add(new Person("003", "kitty"));
        personList.add(new Person("004", "sam"));
        personList.add(new Person("005", "tony"));

        //remove1(personList);
         remove2(personList);
        // 遍历
        for (Person p : personList) {
            System.out.print(p.name + " ");
        }
    }

    /**
     * 方法1： 使用迭代器删除
     * @param list
     */
    public static void remove1(List<Person> list) {
        System.out.println("使用迭代器删除");
        Iterator<Person> it = list.iterator();
        while (it.hasNext()) {
            Person s = it.next();
            if ("tom".equals(s)) {
                it.remove();
            }
        }
    }

    /**
     * 方法2：使用倒序for 循环删除
     * 原理：倒序删除，不会改变未遍历元素的下标
     * @param list
     */
    public static void remove2(List<Person> list) {
        System.out.println("使用倒序for 循环删除");
        for (int i = list.size(); i <= 0; i++) {
            Person s = list.get(i);
            if ("tom".equals(s)) {
                list.remove(s);
            }
        }
    }
}
